// import com.alibaba.druid.sql.ast.*;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;

// import java.io.Serializable;
// import java.util.ArrayList;
// import java.util.List;
#pragma once
#include <list>
#include "../SQLExprImpl.h"
#include "../SQLReplaceable.h"
#include "../../../utils/Serializable.h"
class SQLASTVisitor;
class SQLDataType;

class SQLContainsExpr : public SQLExprImpl, virtual public SQLReplaceable, virtual public Serializable
{
public:
  static long serialVersionUID;
  BOOL_ptr not_;
  SQLExpr_ptr expr;
  SQLExpr_list_ptr targetList;

  SQLContainsExpr();

  SQLContainsExpr(SQLExpr_ptr expr);

  SQLContainsExpr(SQLExpr_ptr expr, BOOL_ptr not_);
  ~SQLContainsExpr();
  SHAREDOBJECT(SQLContainsExpr);

  SQLObject_ptr clone();

  BOOL_ptr isNot();

  void setNot(BOOL_ptr not_);

  SQLExpr_ptr getExpr();

  void setExpr(SQLExpr_ptr expr);

  SQLExpr_list_ptr getTargetList();

  void setTargetList(SQLExpr_list_ptr targetList);

  void accept0(SQLASTVisitor_ptr visitor);

  SQLObject_list_ptr getChildren();

  //@Override
  int hashCode();

  //@Override
  bool equals(Object_ptr obj);

  SQLDataType_ptr computeDataType();

  //@Override
  BOOL_ptr replace(SQLExpr_ptr expr, SQLExpr_ptr target);
};
